#!/usr/bin/env bash

# ----------------------------------------------------------------------
# Filename :  11-openssl-run.sh
# Version  :  1.0
# Date     :  2020/07/08
# Author   :  Lz
# Email    :  lz843723683@gmail.com
# History  :     
#             Version 1.0, 2020/07/08
# Function :  联研院服务器运行版 - openssl
# Out:        
#              0 => TPASS
#              1 => TFAIL
#              other=> TCONF
# ----------------------------------------------------------------------

## TODO : 测试收尾清除工作
#
OpensslClean_FTLYY_RUN(){
	return $TPASS
}


## TODO: 调用程序退出函数
#    In: $1 => 调用脚本结果值
OpensslExit_FTLYY_RUN(){
        # 调用退出函数，其中调用了clean相关函数
	Exit_FTLIB ${1}
}


## TODO: 用户界面
#
OpensslUSAGE_FTLYY_RUN(){
	USAGE_FTLIB "联研院服务器运行版 - openssl"
}


## TODO : 测试前的初始化 
#  Out  : 
#         0 => TPASS
#         1 => TFAIL
#         other=> TCONF
OpensslInit_FTLYY_RUN(){
        # 调用初始化函数
	Init_FTLIB "OpensslClean_FTLYY_RUN"
        # 调用用户界面函数
 	OpensslUSAGE_FTLYY_RUN
}


## TODO : 存在openssl文件
#
OpensslTest01_FTLYY_RUN(){
        local path="/usr/local/ssl/bin"
	local file="openssl"
	
	if [ -f "${path}/${file}" ];then
	# 存在文件
		ls -al ${path}/${file}
	        RetParse_FTLIB "要求 ${path} 中存在文件 ${file}" "False"
	else
	# 不存在文件
		echo "不存在文件 ${path}/${file}"
		OutputRet_FTLIB "${TFAIL}"
	        RetParse_FTLIB "要求 ${path} 中存在文件 ${file}" "False"
	fi
}


## TODO : openssl命令可以正常使用
#
OpensslTest02_FTLYY_RUN(){
	# 字符串
	local str="Hello LTF"
	# 密码
	local passwd="123456"
	# openssl路径
	local opensslpath="/usr/local/ssl/bin/openssl"
	
	# 加密字符串
	local encrypt_str=""
	# 解密字符串
	local decrypt_str=""

	encrypt_str=$(echo -n "${str}" | ${opensslpath} enc -aes-128-ecb -a -e -pass pass:"${passwd}" -nosalt)
	if [ "Z${encrypt_str}" == "Z" ];then
		echo "OpenSSL获取的密文为空"

		OutputRet_FTLIB "${TFAIL}"
                RetParse_FTLIB "要求能够获取到密文" "False"
	
		return ${TFAIL}
	else
		echo "OpenSSL加密字符串 '${str}' ,密文为 ${encrypt_str}"
	fi

	decrypt_str=$(echo "${encrypt_str}" | ${opensslpath} enc -aes-128-ecb -a -d -pass pass:"${passwd}" -nosalt)
	if [ "Z${decrypt_str}" == "Z" ];then
                echo "OpenSSL解密为空"

                OutputRet_FTLIB "${TFAIL}"
                RetParse_FTLIB "要求能够解密成功" "False"

                return ${TFAIL}
        else
		echo "OpenSSL密文为 '${encrypt_str}' ,解密后明文为 ${decrypt_str}"
        fi
	
	if [ "Z${str}" == "Z${decrypt_str}" ];then
		OutputRet_FTLIB "${TPASS}"
	        RetParse_FTLIB "解密后明文要求为 ${str}" "False"
	else
		OutputRet_FTLIB "${TFAIL}"
	        RetParse_FTLIB "解密后明文要求为 ${str}" "False"
	fi
}


## TODO : Main
#  Out  : 
#         0 => TPASS
#         1 => TFAIL
#         other => TCONF
OpensslMain_FTLYY_RUN(){
	OpensslInit_FTLYY_RUN

	OpensslTest01_FTLYY_RUN

	OpensslTest02_FTLYY_RUN

	return ${TPASS}	
}

OpensslMain_FTLYY_RUN
OpensslExit_FTLYY_RUN $?
